<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<meta name="generator" content="Fog Creek CityDesk 2.0.27" />
<meta name="citydesk" content="AF0A0761/17" />
<title>Bindable LINQ - Data Binding</title>
	<style type="text/css">
	body {
		background-color: #fff;
		font: 10pt segoe UI, arial, tahoma, arial, sans-serif;
	}

	h1 {
		font: bold 18pt "Cambria","Segoe UI",Arial;
		margin: 0px;
	}
	h2 {
		font-size: 12pt;
		font-weight: bold;
	}
	h3 {
		font-size: 11pt;
		font-weight: bold;
	}
	h4, h5 {
		font-size: 10pt;
		font-weight: bold;
	}
	
	#container
	{
		width: 90%;
		margin: 10px auto;
		background-color: #fff;
		color: #333;
		border: 1px solid #009900;
		line-height: 130%;
	}
	
	#top
	{
		padding: .5em;
		background-color: #F3F6EC;
		border-bottom: 1px solid #009900;
	}
	
	#top h1
	{
		padding: 0;
		margin: 0;
	}
	
	#leftnav
	{
		float: left;
		width: 250px;
		margin: 0;
		padding: 10px;
	}
	
	#content
	{
		margin-left: 300px;
		border-left: 1px solid #009900;
		padding: 10px;
	}
	
	#footer
	{
		clear: both;
		margin: 0;
		padding: .5em;
		color: #333;
		background-color: #F3F6EC;
		border-top: 1px solid #009900;
	}
	
	a 
	{
		color:#105CB6;
		text-decoration:underline;
	}
	
	#content p { line-height: 150%; }

	</style>
</head>
<body>

	<div id="container">
		<div id="top">
			<h1><a href="../../Index.html">Bindable LINQ</a></h1>
			<h2>Reactive Programming for the .NET Framework</h2>
		</div>
		
		<div id="leftnav">
			<p>
			<ul>
				<li><a href="../../Index.html">Introduction</a></li>
				<li><a href="../../1_QuickStarts/GettingStarted.html">Getting Started</a></li>
				<li><a href="../Overview.html">Design Concepts</a></li>
				<ul>
					<li><a href="Overview.html">Background</a></li>
					<ul>
						<li><a href="ReactiveProgramming.html">Reactive Programming</a></li>
						<li><a href="DataBinding.html">Data Binding</a></li>
						<li><a href="LINQ.html">LINQ</a></li>
					</ul>
				</ul>
				<ul>
					<li><a href="../../2_DesignConcepts/BindableLINQDetails/Overview.html">Bindable LINQ</a></li>
					<ul>
						<li><a href="../../2_DesignConcepts/BindableLINQDetails/Platforms.html">Platform Support</a></li>
						<li><a href="../../2_DesignConcepts/BindableLINQDetails/Dependencies.html">Query Dependencies</a></li>
						<li><a href="../../2_DesignConcepts/BindableLINQDetails/ListOfSupportedQueries.html">List of Supported LINQ Syntax</a></li>
						<li><a href="../../2_DesignConcepts/BindableLINQDetails/BindableLINQPatterns.html">Application Patterns</a></li>
					</ul>
				</ul>
				<li><a href="../../3_FAQ/FAQ.html">FAQ</a></li>
				<li><a href="../../4_QueryExamples/Overview.html">Examples</a></li>
				<li><a href="../../5_SampleApplications/Overview.html">Sample Applications</a></li>
				<li><a href="../../6_Implementation/Overview.html">Implementation</a></li>
				<li><a href="../../License.html">License</a></li>
			</ul>
			</p>
		</div>
	
		<div id="content">
	
			
			<div>
				<h1>Data Binding</h1>
			</div>
			
		
			<p>Data Binding is a UI platform technology that allows properties of UI controls to be synchronized with properties of objects, which has been in many Microsoft technologies since early versions of Microsoft Access and Visual Basic. Newer platforms such as Windows Forms, Silverlight, and Windows Presentation Foundation have deep support for data binding, and in fact in WPF and Silverlight it can be close to impossible to build applications without using data binding.</p>
<p>Data Binding can generally work in two <em>directions</em>. UI controls can push changes to an object (such as when you type in a TextBox), or they can recieve change notifactions from the object (such as updating the value of a Progress Bar based on the property of an object).</p>
<p>Since native CLR objects have no way to signal that they have changed, to facilitate this propagation of change, objects can implement a number of interfaces. In WPF, Silverlight and Windows Forms, these are primarily <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx">INotifyPropertyChanged</a>, <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.ibindinglist.aspx">IBindingList</a> (Windows Forms and WPF) and <a href="http://msdn.microsoft.com/en-us/library/system.collections.specialized.inotifycollectionchanged.aspx">INotifyCollectionChanged</a>&nbsp;(WPF and Silverlight).</p>

<p>To work seemlessly with these UI technologies, Bindable LINQ queries implement these data binding interfaces so that UI controls can be connected and kept in-sync with Bindable LINQ queries automatically. This leverages the platform's support for data binding, while enabling reactive programming to take place far below the user interface.</p>
		</div>
	
		<div id="footer">More Links</div>
	</div>
</body>
</html>
